RAZONAMIENTO
AUTOMÁTICO

“La causalidad no opera hacia atrás” (Gregory Bateson)

“La lógica nació como un intento de mecanizar los procesos intelectivos del razonamiento (D. Hofstadter)

“La matemática pronto será hecha solo por ordenadores” (Boris Shaliach)

“La lógica es combinar lo conocido para alcanzar lo desconocido” (George Edward Moore)



Tipos de Razonamiento

Razonamiento como modo de conciencia analítica

Como sabemos, hay dos modos de conciencia: Razonar es utilizar el modo HI, ir de lo general a lo particular, la capacidad de realizar inferencias o deducciones. Para ello, todo debe ser expresado en un lenguaje formal. El razonamiento hace explícito un conocimiento que ya está implícito en las premisas o en la base de conocimientos.


La automatización del razonamiento

La conciencia inductiva incompleta en principio no se puede automatizar porque lo intuitivo no se puede formalizar; solo se pueden formalizar sus manifestaciones. La conciencia sintética es objeto de estudio de la psicología cognitiva, siendo hoy día uno de los principales desafíos de la inteligencia artificial.

En cambio, la conciencia analítica puede ser automatizada, pues es puramente formal. El razonamiento automático es una rama de la ciencia de la computación que estudia las capacidades de razonamiento de los sistemas computacionales.


El concepto de inferencia

La inferencia es el proceso de derivar conclusiones a partir de un conjunto de premisas (o derivar teoremas a partir de axiomas). Las premisas, las conclusiones y el propio proceso de inferencia deben expresarse en un lenguaje formal, que puede ser natural o artificial. Las premisas o axiomas pueden ser de tipo general o específico, así como las conclusiones.

Suponiendo que el proceso de inferencia sea correcto, las inferencias pueden ser válidas, aunque las premisas sean falsas. Pero de la verdad de las premisas siempre se producen inferencias verdaderas.

Una inferencia es monótona si no varía al añadir nuevas premisas. En caso contrario, es no-monótona.


Tipos de razonamiento con reglas

Una base de conocimientos está formada por:
  1. Un conjunto de premisas o axiomas de una teoría, expresados en un lenguaje formal. Si estas premisas se expresan mediante reglas del tipo “condición → acción” o “antecedente → consecuente”, tenemos una base de reglas, que representan el conocimiento genérico.

  2. Un conjunto de hechos, que forman una base de hechos. Representan el conocimiento específico.
En esta base de conocimientos hay dos tipos de razonamiento:
  1. Directo (o hacia adelante).
    Se van examinando los antecedentes de las reglas, y cuando se cumplen, se obtienen inferencias, que son los consecuentes. Las reglas se vuelven a aplicar a las inferencias obtenidas para obtener nuevas inferencias. Y así sucesivamente hasta que las reglas no produzcan nuevas inferencias.

  2. Inverso (o hacia atrás).
    Se parte del objetivo (una sentencia o expresión) y se examinan las reglas que contienen ese objetivo en los consecuentes de las reglas. Si no se encuentra ninguna regla, es imposible alcanzar el objetivo. Si se encuentran, se elige una de ellas y el antecedente de esa regla se convierte en el nuevo objetivo. Y así sucesivamente en un proceso recursivo. Cuando una regla no conduce al objetivo, se elige otra regla alternativa (si existe). Este tipo de razonamiento es el que se utiliza en la programación lógica.
Estos dos tipos de razonamiento son análogos a los utilizados en el cálculo aritmético. Por ejemplo: 1) Directo: 32 = 9 (se realiza la operación de elevar 3 al cuadrado); 2) Inverso: √9 = 3 (se busca un número tal que su cuadrado sea 9),

El razonamiento directo es más fácil de automatizar que el inverso, de la misma manera que es más fácil realizar operaciones directas que las inversas.

La ventaja del razonamiento directo es que todas las expresiones que se van infiriendo se van incorporando a la base de conocimientos. La desventaja es que las expresiones inferidas son la base para obtener más inferencias, un proceso que tiende a crecer exponencialmente.

La ventaja del razonamiento inverso es que conocemos el objetivo, la expresión a demostrar, y evitamos explorar reglas innecesarias. La desventaja es que los pasos que vamos dando no están garantizados, teniendo que retroceder a menudo para encontrar el camino correcto que nos conducirá al objetivo. Cuando es aplicable, el razonamiento inverso es más eficiente que el razonamiento directo porque no se tienen que hacer múltiples pasadas por el conjunto de las reglas.

Lo ideal es utilizar ambos métodos de manera controlada, según el tema o problema que se trate.


La gestión del razonamiento automático

La gestión del razonamiento, tanto directo como inverso, se realiza con un programa o “motor” de razonamiento. Este motor puede ser específico para cada sistema particular o bien ser genérico (o universal), válido para todo sistema. Lo ideal es que se pueda desarrollar un motor universal, es decir, independientemente del contenido de las reglas.

El razonamiento automático es independiente del dispositivo mecánico con el que se implementa. Computar es una actividad que puede ser humana o mecánica, pero conceptualmente es la misma cosa. La informática o la ciencia de la computación no se reduce a la tecnología de los ordenadores, de la misma manera que las astronomía no se reduce a la tecnología de los telescopios. Ordenadores y telescopios son solo instrumentos de sus respectivas ciencias.

El motor de razonamiento realiza dos funciones:
  1. El examen de cada regla para ver si es aplicable. Si el motor es de razonamiento directo, examina el antecedente. Si el motor es razonamiento inverso, examina el consecuente. El motor de inferencia para el razonamiento hacia adelante explora las reglas en amplitud, es decir, se consideran todas las reglas, independientes entre sí. Para el razonamiento hacia atrás, las reglas se examinan en profundidad, es decir, se parte de una regla y se busca una regla dependiente de ella.

  2. El control, que gestiona el orden en que se examinan las reglas.

Demostración automática de teoremas

Las demostraciones automáticas de teoremas (DAT) −en inglés, Automated Theorem Proving, ATP− es un tipo de razonamiento inverso. Se fundamentan en la lógica formal. Actualmente es el campo más desarrollado del razonamiento automatizado.

El procedimiento consiste en 3 pasos: 1) el usuario expresa una conjetura mediante un expresión del lenguaje formal; 2) esta expresión se la pasa al sistema computacional como entrada; 3) el sistema intenta resolverlo; 4) si se resuelve, la respuesta puede ser positiva o negativa (la conjetura es o no es un teorema).

Un demostrador de teoremas parte del teorema a demostrar y el demostrador descubre (o infiere) los pasos a realizar para llegar desde los axiomas al teorema.

Una demostración puede servir para demostrar que algo es verdadero o para demostrar que algo es falso. Refutar es demostrar una negación.

Mediante la automatización de la demostración de teoremas se han encontrado nuevos teoremas no conocidos previamente. También se han descubierto algunas demostraciones más cortas y elegantes que las humanas.


Campos de aplicación

Los campos de aplicación del razonamiento automático son numerosos, siendo los más importantes:
Una breve historia del razonamiento automático Está en marcha una iniciativa europea de investigación en el campo de la demostración de teoremas de manera eficiente y precisa. El proyecto se denomina TPTP (Thousands of Problems for Problem Solvers, http://www.tptp.org). Se ha creado un nuevo lenguaje también denominado TPTP en el que expresar problemas y soluciones mediante la lógica de orden superior. Y también un formato denominado THF (Typed Higher-order Form).

Hoy día, se puede considerar que el ideal de Leibniz se ha logrado en gran medida. No obstante, aún queda todavía mucho por hacer: investigar nuevas heurísticas, nuevos algoritmos más eficientes, nuevas reglas (o meta-reglas), etc.

Hoy día no hay discusiones sobre aritmética cuando se utiliza una calculadora. Pero la calculadora, aunque dé la respuesta correcta, no la demuestra, es decir, no muestra todos los pasos que da para llegar a un resultado. Lo ideal es que con el razonamiento se logre el mismo resultado.


MENTAL y el Razonamiento Automático

Los sistemas tradicionales de razonamiento automático se basan: En cambio, en MENTAL: En realidad, el problema de las inferencias se puede plantear de manera general. Un proceso de inferencia es un proceso de evaluación normal de una expresión que produce una modificación del espacio abstracto. Si la expresión original no cambia, todas las nuevas expresiones generadas son las inferencias producidas.


Lenguaje universal

El problema del razonamiento automático es que no es posible abordarlo de manera coherente sin un lenguaje formal estándar y universal, donde el lenguaje matemático-lógico sea igual al de los ordenadores. Con MENTAL como lenguaje universal, este problema desaparece y se está en condiciones idóneas para abordar el tema del razonamiento automático.

Taradicionalmente, en el razonamiento automático se ha considerado un lenguaje formal basado en la lógica de predicados de primer orden con igualdad, un lenguaje con el que se podía formalizar muchas áreas de la matemática. Pero este lenguaje dista mucho de ser universal y no es el lenguaje de los ordenadores.

Características de MENTAL como lenguaje universal para el razonamiento automático son:
La formalización de una demostración

Tradicionalmente, las premisas y la conclusión se representan de forma vertical: Por ejemplo, la regla de resolución binaria de Robinson se expresa así: El problema de esta representación es que no se utiliza un lenguaje formal que relacione las premisas y la conclusión.

En MENTAL, este problema se resuelve fácilmente gracias a la semántica de la operación “Condición”. Por ejemplo, la regla de Robinson anterior se puede expresar como una expresión genérica: Esta expresión es equivalente a
⟨( (AB ∧ ¬AC) → BC)⟩
En donde ⟨( ¬A = (A?)' )⟩


La codificación de las reglas

Con el objeto de que el proceso sea lo más eficiente posible y exista correspondencia con el tipo de razonamiento a realizar, las reglas se especifican mediante expresiones genéricas de la forma siguiente: siendo las Ai los antecedentes y C el consecuente. Estas expresiones tienen la ventaja de que cuando no se cumple un antecedente, se termina el proceso de análisis de esa regla. Es lo que se denomina “corte”.

En el razonamiento hacia adelante va desde el antecedentes hacia los consecuentes. El razonamiento hacia atrás va desde el consecuente hacia los antecedentes.

Como la evaluación es de izquierda a derecha, en el razonamiento inverso se pone en primer lugar lo que se quiere demostrar.

Puede haber varias expresiones con el mismo C, es decir, que existan alternativas: a la conclusión se puede llegar por varios caminos posibles. Y lo mismo le ocurre con los antecedentes.

Esta estructura de reglas es equivalente a las cláusulas de Horn, la que se utiliza en programación lógica, que tienen la forma en donde las comas suponen conexiones lógicas “y” (and).

Las reglas pueden interactuar entre sí como activarse o desactivarse, limitarse con condiciones adicionales, etc.


Tipos de inferencias

Las inferencias se realizan mediante los operadores de condición (→, ← y ↔), los operadores de sustitución (=, =: y :=) y el operador de equivalencia (≡).

Las inferencias van de lo general a lo particular y pueden ser de dos tipos:
  1. Horizontales. Se realizan a través de los operadores simétricos (↔ y ≡).

  2. Verticales descendentes. Se realizan a través de las operaciones de condición y de sustitución.

Tipos de expresiones

En MENTAL podemos clasificar las expresiones en 3 tipos:
  1. Expresiones tipo A. Son las expresiones genéricas (parametrizadas o no), que son los motores de las inferencias.

  2. Expresiones tipo B. Son expresiones genéricas (parametrizadas o no) o no genéricas que son las expresiones iniciales a partir de las cuales se realizan las inferencias.

  3. Expresiones tipo C. Son las inferencias realizadas mediante las expresiones de los dos tipos anteriores.
Las expresiones tipo B se especifican detrás de las de tipo A para que se evalúen de forma inmediata y que producen las expresiones de tipo C.


Características de las inferencias
Ejemplos
  1. Expresiones tipo A.
    ⟨( x/hombre → x/mortal )⟩ // modus ponens

    Expresiones tipo B.
    Sócrates/hombre

    Expresiones tipo C (inferencias).
    Sócrates/mortal

  2. Expresiones tipo A.
    ⟨( a = b )⟩ // sustitución
    ⟨( b = c )⟩ // sustitución


    Expresiones tipo B.
    Ninguna.

    Expresiones tipo C (inferencias).
    ⟨( a = c )⟩ // ley transitiva de la sustitución

  3. Expresiones tipo A.
    ⟨( x+yy+x )⟩ // ley conmutativa de la suma

    Expresiones tipo B.
    a+b
    ⟨a+x


    Expresiones tipo C (inferencias).
    (a+b ≡ b+a)
    (⟨a+x⟩ ≡ ⟨x+a⟩)


  4. Expresiones tipo A.
    ⟨( xxy )⟩ // ley de la lógica

    Expresiones tipo B.
    a

    Expresiones tipo C (inferencias).
    ⟨( a → a∨y )⟩

  5. Expresiones tipo A.
    ⟨( x*yy*x )⟩ // ley conmutativa del producto

    ⟨( (x+y)*z ≡ (x*z + y*z) )⟩ // ley distributiva


    Expresiones tipo B.
    Ninguna.

    Expresiones tipo C (inferencias).
    ⟨( (x+y)*z ≡ (z*x + z*y) )⟩
    ⟨( (x+y)*z ≡ (x*z + z*y) )⟩
    ⟨( (x+y)*z ≡ (z*x + y*z) )⟩
    ⟨( (x+y)*z ≡ (x*z + y*z) )⟩

    ⟨( z*(x+y) ≡ (x*z + y*z) )⟩
    ⟨( z*(x+y) ≡ (z*x + z*y) )⟩
    ⟨( z*(x+y) ≡ (x*z + z*y) )⟩
    ⟨( z*(x+y) ≡ (z*x + y*z) )⟩


    Este es un ejemplo de inferencias que producen expresiones genéricas.

  6. Expresiones tipo A.
    ⟨( (x+y)*z ≡ (x*z + y*z) )⟩ // ley distributiva

    ⟨( x^2 =: x*x )⟩


    Expresiones tipo B.
    (a+b)^2

    Expresiones tipo C (inferencias).
    ( (a+b)^2 =: (a^2 + 2*a*b + b^2) )

  7. Expresiones tipo A.
    ⟨( xyx )⟩ // ley de la lógica

    ⟨( xyyx )⟩ // ley conmutativa de la conjunción lógica


    Expresiones tipo B.
    a∧b

    Expresiones tipo C (inferencias).
    b∧a
    a
    b


  8. Expresiones tipo A.
    ⟨( x∈(CD) ↔ (xCxD) )⟩

    Expresiones tipo B.
    a∈(A∩B)

    Expresiones tipo C (inferencias).
    a∈A
    a∈B


  9. Expresiones tipo A.
    ⟨( (xy) ≡ (x' ∧ y')' )⟩ // primera ley de De Morgan

    ⟨( (xy') ↔ (x' ≡ y) )⟩


    Expresiones tipo C (inferencias).
    ⟨( (xy)' ≡ (x' ∧ y') )⟩

    ⟨( (x' ∨ y')' ≡ (xy) )⟩ // segunda ley de De Morgan

Gestión de las expresiones genéricas
Ejemplo de razonamiento directo e inverso

Se parte de una expresión (bien formada) G, genérica (parametrizada o no) o específica, de la que se quiere saber si es válida o no.

El proceso es automático, pues las expresiones genéricas se evalúan en todo momento. Por lo tanto, si G aparece como consecuente en algún axioma, automáticamente se autoevaluará si se cumple la condición asociada. Si esa condición depende a su vez de otra condición, se aplica el mismo proceso, y así sucesivamente. Las condiciones que no se cumplen se evaluarán como  (la expresión nula). Ejemplo: Base de conocimientos para el razonamiento directo: Consulta de la base de conocimientos: Base de conocimientos para el razonamiento inverso: Consulta de la base de conocimientos:
Conclusiones

La idea de Leibniz de crear un lenguaje universal se puede decir que se ha cumplido con MENTAL, al fundamentarse en un número mínimo de conceptos que producen potencialmente infinitas expresiones. Pero no se fundamenta en el cálculo binario, sino en arquetipos primarios duales. La dualidad es universal. Los números binarios son solo la manifestación más simple de esa dualidad.

Y también se ha realizado con MENTAL la idea de Leibniz de que ese lenguaje universal fuera capaz de realizar cálculos. Esos cálculos se especifican mediante expresiones genéricas, que son autosuficientes como motores para el razonamiento automático.



Adenda

El sistema deductivo de Hilbert

El sistema deductivo de Hilbert para la lógica proposicional tiene las características siguientes: Por ejemplo, queremos demostrar: pp:
  1. Instanciación del axioma 1 con p=p y q=(pp): p→((pp)→p)

  2. Instanciación del axioma 2 con p=p, q=(pp) y r=p: p→((pp)→p))→
    ((p→(pp))→(pp))

  3. Aplicando el Modus Ponens entre 1 y 2: (p→(pp))→(pp)

  4. Instanciado el axioma 1 con p=p y q=p: p→(pp)

  5. Aplicando el Modus Ponens entre 3 y 4: (pp)

Bibliografía